package utils

import (
	"fmt"
	"gopkg.in/ini.v1"
)

//读取配置文件

//全局配置参数
var (
	Db     string //数据库类型名：如mysql,ssms(目前只支持mysql)
	DbHost string //数据库服务器IP
	DbPort string //数据库端口
	DbUser string //用户

	DbPassWords []string //密码
	DbNames     []string //数据库名
	SaveDir     string   //备份文件保存目录

	Hour              int //每隔几小时
	Min               int //每隔几分钟
	Second            int //每隔几秒
	PollingBackEnable bool

	Minutes         string
	Hours           string
	DayOfMonth      string
	Month           string
	DayOfWeek       string
	PointBackEnable bool
)

//slice map  解析

/**
初始化
*/
func init() {
	//TODO:后期准备处理多服务器配置文件
	file, err := ini.Load("config/db1.ini")
	if err != nil {
		fmt.Println("配置文件读取错误,请检查配置文件路径!", err)
	}
	LoadData(file)

	//加载相同节点名的多配置项
	f, e := ini.ShadowLoad("config/db1.ini")
	if e != nil {
		fmt.Println("配置文件读取错误,请检查配置文件路径!", err)
	}
	ShadowLoad(f)
}

/**
加载配置文件节点下的配置项
*/
func LoadData(file *ini.File) {
	Db = file.Section("database").Key("Db").MustString("mysql")
	DbHost = file.Section("database").Key("DbHost").MustString("localhost")
	DbPort = file.Section("database").Key("DbPort").MustString("3306")
	DbUser = file.Section("database").Key("DbUser").MustString("root")
	SaveDir = file.Section("database").Key("SaveDir").MustString("/")

	Hour = file.Section("PollingBack").Key("Hour").MustInt(0)
	Min = file.Section("PollingBack").Key("Min").MustInt(0)
	Second = file.Section("PollingBack").Key("Second").MustInt(0)

	PollingBackEnable = file.Section("PollingBack").Key("PollingBackEnable").MustBool(false)

	Minutes = file.Section("PointBack").Key("Minutes").MustString("*")
	Hours = file.Section("PointBack").Key("Hours").MustString("*")
	DayOfMonth = file.Section("PointBack").Key("DayOfMonth").MustString("*")
	Month = file.Section("PointBack").Key("Month").MustString("*")
	DayOfWeek = file.Section("PointBack").Key("DayOfWeek").MustString("*")
	PointBackEnable = file.Section("PointBack").Key("PointBackEnable").MustBool(false)

}

/**
加载相同的节点
*/
func ShadowLoad(file *ini.File) {

	DbPassWords = file.Section("database").Key("DbPassWord").ValueWithShadows()
	DbNames = file.Section("database").Key("DbName").ValueWithShadows()
}
